group { name: "e/desklock/background";
   data.item: "hide_signal" "1";
   parts {
      part { name: "clip"; type: RECT;
         description { state: "default" 0.0;
            color: 255 255 255 0; // no cc
            visible: 0;
         }
         description { state: "visible" 0.0;
            color: 255 255 255 255; // no cc
            visible: 1;
         }
      }
      part { name: "bg"; type: RECT;
         clip_to: "clip";
         description { state: "default" 0.0;
            color_class: "/bg/normal/desklock/background";
         }
      }
      program { name: "shower"; signal: "show"; source: "";
         action: STATE_SET "visible" 0.0;
         transition: SINUSOIDAL 0.5 USE_DURATION_FACTOR 1;
         target: "clip";
      }
      program { signal: "e,action,hide"; source: "e";
         action: STATE_SET "default" 0.0;
         transition: SINUSOIDAL 0.5 USE_DURATION_FACTOR 1;
         target: "clip";
         sequence {
            action: SIGNAL_EMIT "e,action,hide,done" "e";
         }
      }
      program { signal: "e,action,show,immediate"; source: "e";
         action: ACTION_STOP;
         target: "shower";
         sequence {
            action: STATE_SET "visible" 0.0;
            target: "clip";
         }
      }
      part { name: "e.swallow.login_box"; type: SWALLOW;
         clip_to: "clip";
         description { state: "default" 0.0;
         }
      }
   }
}

group { name: "e/desklock/login_box";
   set { name: "logo_mono";
      image { image: "logo.png" COMP;  size: 601 601 99999 99999; }
      image { image: "logo2.png" COMP; size: 301 301   600   600; }
      image { image: "logo3.png" COMP; size: 151 151   300   300; }
      image { image: "logo4.png" COMP; size:  76  76   150   150; }
      image { image: "logo5.png" COMP; size:  0    0    75    75; }
   }
   IMAGE_RING("ringa", 160)
   IMAGE_RING("ringb", 160)
   IMAGE_RING("ringc", 160)
   parts {
      part { name: "logo_clip"; type: RECT;
         description { state: "default";
            min: 9999 9999;
            fixed: 1 1;
         }
         description { state: "hidden";
            visible: 0;
         }
      }
      part { name: "clipper"; type: RECT;
         description { state: "default" 0.0;
            rel1.to_x: "logo";
            rel1.to_y: "e.text.password";
            rel1.relative: 0.3 0.0;
            rel1.offset: -100 -4;
            rel2.to_x: "logo";
            rel2.to_y: "e.text.password";
            rel2.relative: 0.7 1.0;
            rel2.offset: 99 196;
         }
      }
      part { name: "logo"; clip_to: "logo_clip";
         scale: 1;
         description { state: "default" 0.0;
            image.normal: "logo_mono";
            rel1.relative: 0.5 0.5;
            rel2.relative: 0.5 0.5;
            FIXED_SIZE(150, 150)
            color_class: "/fg/normal/desklock/logo";
         }
      }
      part { name: "e.text.title"; type: TEXT;
         scale: 1;
         description { state: "default" 0.0;
            rel1.relative: 0.0 1.0;
            rel1.offset: 3 3;
            rel1.to_y: "logo";
            rel2.relative: 1.0 1.0;
            rel2.offset: -4 3;
            rel2.to_y: "logo";
            color_class: "/fg/normal/desklock/text/title";
            align: 0.5 0.0;
            text { font: FNBD; size: 10;
               min: 1 1;
               align: 0.5 0.5;
               text_class: "desklock_title";
               ellipsis: -1;
            }
            fixed: 0 1;
         }
      }
      part { name: "e.text.hint"; type: TEXT;
         scale: 1;
         description { state: "default" 0.0;
            rel1.relative: 0.0 1.0;
            rel1.offset: 3 13;
            rel1.to_y: "e.text.password";
            rel2.relative: 1.0 1.0;
            rel2.offset: -4 3;
            rel2.to_y: "e.text.password";
            color_class: "/fg/normal/desklock/text/hint";
            align: 0.5 0.0;
            text { font: FNBD; size: 10;
               min: 1 1;
               align: 0.5 0.5;
               text_class: "desklock_hint";
               ellipsis: -1;
            }
            fixed: 0 1;
         }
      }
      part { name: "selection"; type: RECT; mouse_events: 0;
         description { state: "default" 0.0;
            rel.to: "e.text.password";
            color_class: "/fg/normal/desklock/selection";
            visible: 0;
         }
         description { state: "active" 0.0;
            inherit: "default" 0.0;
            visible: 1;
         }
      }
      part { name: "e.text.password"; type: TEXT;
         scale: 1;
         clip_to: "clipper";
         description { state: "default" 0.0;
            rel1.relative: 0.0 1.0;
            rel1.offset: 3 10;
            rel1.to_x: "clipper";
            rel1.to_y: "e.text.title";
            rel2.relative: 0.0 1.0;
            rel2.offset: 3 10;
            rel2.to_x: "clipper";
            rel2.to_y: "e.text.title";
            color_class: "/fg/normal/desklock/text/password";
            align: 0.0 0.0;
            text { font: FN; size: 10;
               min: 1 1;
               align: 0.0 0.5;
               text_class: "desklock_passwd";
               ellipsis: -1;
            }
            fixed: 1 1;
         }
      }
      part { name: "cursor"; type: RECT; mouse_events: 0;
         scale: 1;
         clip_to: "clipper";
         description { state: "default" 0.0;
            rel.to: "e.text.password";
            rel1.relative: 1.0 0.0;
            rel1.offset: 0 -4;
            rel2.offset: -1 3;
            color_class: "/fg/normal/desklock/text/cursor";
            min: 1 10;
            fixed: 1 1;
            visible: 0;
            offscale;
         }
         description { state: "visible" 0.0;
            inherit: "default" 0.0;
            visible: 1;
         }
      }
      part { name: "fprint";
         scale: 1;
         description { state: "default" 0.0;
            image.normal: "i-fingerprint";
            min: 40 40;
            max: 40 40;
            rel.to_x: "clipper";
            rel.to_y: "e.text.password";
            rel1.relative: 0.0 1.0;
            align: 0.5 0.0;
            color: 255 255 255 0; // no cc
            color_class: "/fg/normal/desklock/fprint/normal";
            visible: 0;
         }
         description { state: "active" 0.0;
            inherit: "default" 0.0;
            color: 255 255 255 255; // no cc
            visible: 1;
         }
         description { state: "auth-success" 0.0;
            inherit: "default" 0.0;
            color_class: "/fg/normal/desklock/fprint/success";
            color: 255 255 255 255; // no cc
            visible: 1;
         }
         description { state: "auth-fail" 0.0;
            inherit: "default" 0.0;
            color_class: "/fg/normal/desklock/fprint/fail";
            color: 255 255 255 255; // no cc
            visible: 1;
         }
      }
      part { name: "busy_area"; type: SPACER;
         scale: 1;
         description { state: "default" 0.0;
            min: 40 40;
            max: 40 40;
            rel.to: "clipper";
            rel1.relative: 0.0 0.5;
            align: 0.5 0.0;
         }
      }
      program { signal: "e,action,hide"; source: "e";
         action: SIGNAL_EMIT "e,state,invalid" "e";
      }
      BUSY("busy_area", "e,state,checking", "e", "e,state,invalid", "e")
   }
   programs {
      program { name: "cursor_show";
         signal: "show"; source: "";
         action: STATE_SET "visible" 0.0;
         target: "cursor";
         after: "cursor_show_timer";
      }
      program { name: "cursor_show_timer";
         in: 0.4 0.0;
         after: "cursor_hide";
      }
      program { name: "cursor_hide";
         action: STATE_SET "default" 0.0;
         target: "cursor";
         after: "cursor_hide_timer";
      }
      program { name: "cursor_hide_timer";
         in: 0.4 0.0;
         after: "cursor_show";
      }
      program { signal: "e,state,selected"; source: "e";
         action: STATE_SET "active" 0.0;
         target: "selection";
      }
      program { signal: "e,state,unselected"; source: "e";
         action: STATE_SET "default" 0.0;
         target: "selection";
      }
      program { signal: "e,state,logo,hidden"; source: "e";
         action: STATE_SET "hidden" 0.0;
         target: "logo_clip";
      }
      program { signal: "e,state,logo,visible"; source: "e";
         action: STATE_SET "default" 0.0;
         target: "logo_clip";
      }

      program { signal: "e,fprint,unknown"; source: "e";
         action: STATE_SET "active" 0.0;
         transition: SINUSOIDAL 0.5 USE_DURATION_FACTOR 1;
         target: "fprint";
      }
      program { signal: "e,fprint,press"; source: "e";
         action: STATE_SET "active" 0.0;
         transition: SINUSOIDAL 0.5 USE_DURATION_FACTOR 1;
         target: "fprint";
      }
      program { signal: "e,fprint,swipe"; source: "e";
         action: STATE_SET "active" 0.0;
         transition: SINUSOIDAL 0.5 USE_DURATION_FACTOR 1;
         target: "fprint";
      }

      program { signal: "e,fprint,auth,success"; source: "e";
         action: STATE_SET "auth-success" 0.0;
         transition: SINUSOIDAL 0.2 USE_DURATION_FACTOR 1;
         target: "fprint";
      }
      program { signal: "e,fprint,auth,fail"; source: "e";
         action: STATE_SET "auth-fail" 0.0;
         transition: SINUSOIDAL 0.2 USE_DURATION_FACTOR 1;
         target: "fprint";
         after: "fprint-reset";
      }
      program { signal: "e,fprint,auth,short"; source: "e";
         action: STATE_SET "auth-fail" 0.0;
         transition: SINUSOIDAL 0.2 USE_DURATION_FACTOR 1;
         target: "fprint";
         after: "fprint-reset";
      }
      program { signal: "e,fprint,auth,nocenter"; source: "e";
         action: STATE_SET "auth-fail" 0.0;
         transition: SINUSOIDAL 0.2 USE_DURATION_FACTOR 1;
         target: "fprint";
         after: "fprint-reset";
      }
      program { signal: "e,fprint,auth,removeretry"; source: "e";
         action: STATE_SET "auth-fail" 0.0;
         transition: SINUSOIDAL 0.2 USE_DURATION_FACTOR 1;
         target: "fprint";
         after: "fprint-reset";
      }
      program { signal: "e,fprint,auth,retry"; source: "e";
         action: STATE_SET "auth-fail" 0.0;
         transition: SINUSOIDAL 0.2 USE_DURATION_FACTOR 1;
         target: "fprint";
         after: "fprint-reset";
      }
      program { signal: "e,fprint,auth,disconnect"; source: "e";
         action: STATE_SET "default" 0.0;
         transition: SINUSOIDAL 0.2 USE_DURATION_FACTOR 1;
         target: "fprint";
      }
      program { signal: "e,fprint,auth,error"; source: "e";
         action: STATE_SET "auth-fail" 0.0;
         transition: SINUSOIDAL 0.2 USE_DURATION_FACTOR 1;
         target: "fprint";
         after: "fprint-reset";
      }
      program { name: "fprint-reset";
         action: STATE_SET "active" 0.0;
         transition: SINUSOIDAL 0.5 USE_DURATION_FACTOR 1;
         target: "fprint";
         in: 0.5 0.0;
      }
   }
}

group { name: "e/desklock/pin_box";
   parts {
      part { name: "e.text.title"; type: TEXT;
         scale: 1;
         description { state: "default" 0.0;
            rel1.offset: 3 3;
            rel1.relative: 0.0 1.0;
            rel1.to_y: "e.swallow.buttons";
            rel2.offset: -4 -3;
            color_class: "/fg/normal/desklock/text/title/pin";
            align: 0.5 0.0;
            text { font: FNBD; size: 10;
               min: 0 1;
               align: 0.5 0.5;
               text_class: "desklock_title";
               text: "Please enter your PIN";
            }
            fixed: 0 1;
         }
      }
      part { name: "selection"; type: RECT; mouse_events: 0;
         description { state: "default" 0.0;
            rel.to: "e.text.password";
            color_class: "/fg/normal/desklock/selection";
            visible: 0;
         }
         description { state: "active" 0.0;
            inherit: "default" 0.0;
            visible: 1;
         }
      }
      part { name: "e.text.password"; type: TEXT;
         scale: 1;
         description { state: "default" 0.0;
            rel1.relative: 0.5 0.0;
            rel1.offset: 3 2;
            rel2.relative: 0.5 0.0;
            rel2.offset: 3 -2;
            color_class: "/fg/normal/desklock/text/password";
            text { font: FN; size: 10;
               min: 1 1;
               ellipsis: -1;
               align: 1.0 0.5;
               text_class: "desklock_passwd";
            }
            fixed: 1 1;
            offscale;
         }
      }
      part { name: "cursor"; type: RECT; mouse_events: 0;
         description { state: "default" 0.0;
            rel.to: "e.text.password";
            rel1.relative: 1.0 0.0;
            rel1.offset: 0 -4;
            rel2.offset: -1 3;
            color_class: "/fg/normal/desklock/text/cursor";
            min: 1 3;
            fixed: 1 1;
            offscale;
         }
         description { state: "visible" 0.0;
            inherit: "default" 0.0;
         }
      }
      part { name: "button_clip"; type: RECT;
         description { state: "default";
         }
      }
      part { name: "e.swallow.buttons"; type: SWALLOW;
        clip_to: "button_clip";
        description { state: "default";
           rel1.relative: 0 1.0;
           rel1.to_y: "e.text.password";
           rel1.offset: 0 2;
           align: 0.5 1.0;
        }
      }
   }
   programs {
      program { name: "cursor_show";
         signal: "show"; source: "";
         action: STATE_SET "visible" 0.0;
         target: "cursor";
         after: "cursor_show_timer";
      }
      program { name: "cursor_show_timer";
         in: 0.5 0.0;
         after: "cursor_hide";
      }
      program { name: "cursor_hide";
         action: STATE_SET "default" 0.0;
         target: "cursor";
         transition: SINUSOIDAL 0.2 USE_DURATION_FACTOR 1;
         after: "cursor_hide_timer";
      }
      program { name: "cursor_hide_timer";
         in: 0.2 0.0;
         after: "cursor_show";
      }
      program { signal: "e,state,selected"; source: "e";
         action: STATE_SET "active" 0.0;
         target: "selection";
      }
      program { signal: "e,state,unselected"; source: "e";
         action: STATE_SET "default" 0.0;
         target: "selection";
      }
   }
}
